perm filename G8[KID,KMC] blob
sn#122907 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE G8
;THIS MEMBER OF THE NEW KIDS SUITE WAS THE OLD GAME 2. IT DISPLAYS
;ALL LETTERS THAT THE CHILD TYPES ON A RECTANGULAR GRID. IT ENABLES
;THE CHILD TO COMPARE CHARACTERS WITH EACH OTHER.
EXTERNAL MAINLP,DPINIT,PDPGET,CLEAR,SHOW,AIVECT,CHINIT
EXTERNAL LV2,KILL,TYOPTR,TIKCNT,DDRREL,DMDDIR,SPEAK
INTERNAL DOTHNG,GAMNAM,GAMENO,DIRECT
X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13 ;SAME AS X6
B←14
C←15
GAMNAM: 0
GAMENO: 001000000000 ;GAME NUMBER FOR HISTORY FILE
DIRECT: BLOCK =2 ;DUMMY DIRECTORY AREA
ENTURD: 0 ;ZERO UNTIL FIRST TIME THROUGH.
DOTHNG: ;POSSIBLY DO INITIALISATION.
MOVE A,ENTURD ;FIRST TIME TRU INDICATOR.
JUMPN A,APRES ;SKIP INITIALISATION IF SET
SETOM ENTURD ;NEVER INITIALISE AGAIN.
INITL: ;THIS CODE IS PRELIMINARY TO PUTTING FIRST CHAR UP.
SETZM NCHARS ;NCHARS←0
SETZM NLINES ;NLINES ← 0;
SETZM LSTLTH ;INITIALLY A LIST OF 0 CHARS.
PUSHJ P,CRLF ;END THE LINE.
APRES: ;INITIALISATION DONE IF NEEDED.
;THE CHARACTER TYPED IS IN X1 (RANGE IS 000 TO 137).
MOVE X2,ALFBET(X1) ;SOUND FILE NAME IF ANY.
JUMPE X2,MAINLP ;FORGET IT IF NO SOUND FILE.
CAIE X1,15 ;TEST FOR CR.
JRST .+3
MOVEI X1,001 ;THE DOWN ARROW
JRST SLOOB
CAIE X1,11 ;TEST FOR TAB.
JRST .+2
MOVEI X1,031 ;THE RIGHT POINTING ARROW
SLOOB: ;X1 CONTAINS THE CHARACTER TO BE SHOWN.
MOVE A,LSTLTH ; # OF CHARS ALREADY THERE.
MOVEM X1,LSTAR(A) ;PUT LATEST CHAR IN LIST.
MOVEI B,040 ;A SPACE CHARACTER
MOVEM B,LSTAR+1(A)
MOVEM B,LSTAR+2(A)
ADDI A,3 ;NOW 3 EXTRA CHARS.
MOVEM A,LSTLTH ;PUT IT WHERE IT COUNTS.
FILLIN: ;NOW SHOW THOSE CHARS WHICH WE HAVE.
PUSHJ P,CLEAR ;CLEAR BUFFER
MOVEI A,=0
MOVEI B,=400
PUSHJ P,AIVECT ;AIVECT(0,400)
MOVEI A,0
MOVEI B,0
MOVEI C,46
MOVEI 0,7
DPB 0,[POINT 3,C,27]
PUSHJ P,LV2 ;GVECT(0,0,46,7,0)
MOVEI A,7
MOVEI B,=1000
MOVEI C,=-500
PUSHJ P,CHINIT ;CHINIT(7,1000,-500)
MOVEI A,0 ;THIS WILL COUNT THE CHARACTERS PRINTED.
FILLLP: MOVE B,LSTAR(A) ;GET THE NEXT
IDPB B,TYOPTR ;PUTIT DISPLAY BUFFER
ADDI A,1 ;COUNT THAT
CAMGE A,LSTLTH
JRST FILLLP
MOVEI A,1 ;SHOW THE CURRENT TEXT ON POG 1
PUSHJ P,SHOW
MOVE A,X2 ;THE FILENAME.
PUSHJ P,DMDDIR
JUMPN A,.+2
PUSHJ P,SPEAK
AOS NCHARS ;BUMP LINE CHARACTER COUNT
MOVE A,NCHARS ;WILL TEST FOR OVERFLOW.
CAIE A,7
JRST LAB1 ;NCHARS ≠ 7
SETZM NCHARS ;NCHARS←0
AOS NLINES ;NLINES←NLINES+1
PUSHJ P,CRLF
PUSHJ P,CRLF
LAB1: MOVE A,NLINES
CAIN A,4
SETZM ENTURD
JRST MAINLP
CRLF: ;OUTPUT A CR AND A LF
MOVE A,LSTLTH
MOVEI B,015 ;A CR CHARACTER
MOVEM B,LSTAR(A) ;ADD IT TO LIST
MOVEI B,012
MOVEM B,LSTAR+1(A) ;DO IT TO IT TOO.
ADDI A,2
MOVEM A,LSTLTH ;INCREASE LENGTH OF LIST
POPJ P,
NCHARS: 0
NLINES: 0
LSTLTH: 0 ;LENGTH OF LIST OF CHARACTERS FOR BUFFER.
LSTAR: BLOCK =200
ALFBET: 0 ;000
0 ;001
0 ;002
0 ;003
0 ;004
0 ;005
0 ;006
0 ;007
0 ;010
SIXBIT /XTAB8/ ;011
0 ;012
0 ;013
0 ;014
SIXBIT /XCR8/ ;015
0 ;016
0 ;017
0 ;020
0 ;021
0 ;022
0 ;023
0 ;024
0 ;025
0 ;026
0 ;027
0 ;030
0 ;031
0 ;032
0 ;033
0 ;034
0 ;035
0 ;036
0 ;037
SIXBIT /XSP8/ ;040
0 ;041
0 ;042
0 ;043
0 ;044
0 ;045
0 ;046
0 ;047
SIXBIT /XLP8/ ;050
SIXBIT /XRP8/ ;051
0 ;052
SIXBIT /XPLS8/ ;053
SIXBIT /XCOM8/ ;060
0 ;061
SIXBIT /XPER8/ ;062
0 ;057
SIXBIT /N08/ ;060
SIXBIT /N18/ ;061
SIXBIT /N28/ ;062
SIXBIT /N38/ ;063
SIXBIT /N48/ ;064
SIXBIT /N58/ ;065
SIXBIT /N68/ ;066
SIXBIT /N78/ ;067
SIXBIT /N88/ ;070
SIXBIT /N98/ ;071
0 ;072
SIXBIT /XSMI8/ ;073
0 ;074
0 ;075
0 ;076
0 ;077
0 ;100
SIXBIT /A8/ ;101
SIXBIT /B8/ ;102
SIXBIT /C8/ ;103
SIXBIT /D8/ ;104
SIXBIT /E8/ ;105
SIXBIT /F8/ ;106
SIXBIT /G8/ ;107
SIXBIT /H8/ ;110
SIXBIT /I8/ ;111
SIXBIT /J8/ ;112
SIXBIT /K8/ ;113
SIXBIT /L8/ ;114
SIXBIT /M8/ ;115
SIXBIT /N8/ ;116
SIXBIT /O8/ ;117
SIXBIT /P8/ ;120
SIXBIT /Q8/ ;121
SIXBIT /R8/ ;122
SIXBIT /S8/ ;123
SIXBIT /T8/ ;124
SIXBIT /U8/ ;125
SIXBIT /V8/ ;126
SIXBIT /W8/ ;127
SIXBIT /X8/ ;130
SIXBIT /Y8/ ;131
SIXBIT /Z8/ ;132
0 ;133
0 ;134
0 ;135
0 ;136
SIXBIT /XBSP8/ ;137
END